package edu.upc.cineplanet.repositoryjdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import edu.upc.cineplanet.Domain.Funcion;
import edu.upc.cineplanet.Domain.PeliculaComentario;
import edu.upc.cineplanet.repository.FuncionRepository;

@Repository
public class FuncionRepositoryJdbc extends JdbcDaoSupport implements FuncionRepository  {
	
	@Autowired
	public FuncionRepositoryJdbc(DataSource dataSource){
		setDataSource(dataSource);		
	}

	
	public List<Funcion> verCartelera(String fecha,String cine) {
	 String sql ="SELECT * FROM FUNCION F WHERE F.FE_FUNCION='"+ fecha +"' AND F.CO_CINE='"+ cine +"'";
	 List<Funcion> funciones;	
	 funciones = getJdbcTemplate().query(sql, new FuncionRowMapper());
	 return funciones;
	}
	
	public List<Funcion> verFuncionesDisponibles(String fecha,String cine ) {
		 String sql ="SELECT * FROM FUNCION F WHERE F.FE_FUNCION='"+ fecha +"' AND F.CO_CINE='"+ cine  +"'";
		 List<Funcion> funciones;	
		 funciones = getJdbcTemplate().query(sql, new FuncionRowMapper());
		 return funciones;
		}

	
	public void actualizarCantidadFuncion(String funcion, String cantidad) {
		String sql = "update FUNCION set NU_OCUPADOS = NU_OCUPADOS  + '"+ cantidad +"'  where CO_FUNCION = '"+ funcion  +"'"; 
		getJdbcTemplate().update(sql);
		
	}	
	
	
	private class FuncionRowMapper implements ParameterizedRowMapper<Funcion>{			
		public Funcion mapRow(ResultSet rs, int rowNum) throws SQLException{
			Funcion funcion = new Funcion();
			funcion.setCO_PELICULA(rs.getString("cO_PELICULA"));
			funcion.setCO_CINE(rs.getString("cO_cine"));
			funcion.setCO_SALA(rs.getString("cO_SALA"));
			funcion.setCO_TIPOFUNCION(rs.getString("cO_TIPOFUNCION"));
			funcion.setFE_FUNCION(rs.getString("fE_FUNCION"));
			funcion.setHR_HORARIO(rs.getString("hR_HORARIO"));
			funcion.setNU_ASIENTOS(rs.getInt("nU_ASIENTOS"));
			funcion.setCO_FUNCION(rs.getString("Co_FUNCION"));
			funcion.setNU_OCUPADOS(rs.getInt("nU_OCUPADOS"));
			return funcion;
		}
			
	}
	
}